// 登录模块
import {
  getUser,
  delUser,
  setUser
} from '@/utils/auth.js'
import {
  login
} from '@/api/login.js'
export default {
  namespaced: true,
  state: () => ({
    //   如果一开始本地缓存中有token值了 就保存原有的 否则为空
    userinfo: getUser() || null
  }),
  mutations: {
    // 当登录成功后
    // 在state中存储token信息
    // 更新用户信息
    updataUserInfo (state, payload) {
      // 更新在state中存储token
      state.userinfo = payload
      //   更新缓存中的token
      setUser(payload)
    },
    // 删除用户信息
    delUserInfo (state) {
      // 在state中删除token
      state.userinfo = null
      //   同时缓存中也要删除token
      delUser()
    }
  },
  actions: {
    // 实现登录的action
    async toLogin (context, payload) {
      try {
        // 调用登录接口
        const ret = await login(payload)
        // 调用mutation，更新用户信息
        context.commit('updataUserInfo', ret.data)
        if (ret && ret.data && ret.data.token) {
          // 登录成功
          return true
        }
      } catch (e) {
        console.log(e)
        // 告诉页面组件登录失败了
        return false
      }
    }
  }
}
